package vip.zhenzicheng.algorithm.leetcode.array;

/**
 * <a href="https://leetcode.cn/problems/move-zeroes/">移动零</a>
 * 说明：给定一个数组 nums,编写一个函数将所有0移动到数组末尾，且原数组相对顺序不变，只能在原数组中操作，不能复制
 * 边界：
 * 1 <= nums.length <= 104
 * -231 <= nums[i] <= 231 - 1
 *
 * @author zhenzicheng
 * @date: 2022-05-31 10:50
 */
public class MoveZeroes_283 {

  /**
   * 双指针
   */
  public void moveZeroes(int[] nums) {
    if (nums.length == 1) { // 边界
      return;
    }
    int nonZeroIndex = 0;
    for (int cur = 0; cur < nums.length; cur++) {
      if (nums[cur] != 0) {
        nums[nonZeroIndex++] = nums[cur];
      }
    }

    for (; nonZeroIndex < nums.length; nonZeroIndex++) {
      nums[nonZeroIndex] = 0;
    }

  }
}
